﻿#include <iostream>
using namespace std;

//二进制插入
//https://www.nowcoder.com/questionTerminal/30c1674ad5694b3f8f0bc2de6f005490
//class BinInsert { //先取二进制位 然后将n的i到j位使用m的二进制位覆盖
//public:
//	int binInsert(int n, int m, int j, int i) {
//		vector<int> v1 = getBinary(n);
//		vector<int> v2 = getBinary(m);
//		for (int t = 0; t < v2.size(); ++t)
//		{
//			v1[j + t] = v2[t];
//		}
//		reverse(v1.begin(), v1.end());
//		int c = 0, num = 0;
//		for (const auto& n : v1)
//		{
//			if (n) { num += pow(2, c); }
//			++c;
//		}
//		return num;
//	}
//	vector<int> getBinary(int num)
//	{
//		vector<int> v;
//		while (num)
//		{
//			v.push_back(num % 2);
//			num /= 2;
//		}
//		return v;
//	}
//};


//class BinInsert {
//public:
//    int binInsert(int n, int m, int j, int i) {
//        return (n + (m << j)); //根据题目要求先将m移动j位然后加上n就能插入二进制位
//    }
//};


//查找组成一个偶数最接近的两个素数
//https://www.nowcoder.com/questionTerminal/f8538f9ae3f1484fb137789dec6eedb9?toCommentId=289324
//bool isPrime(int n)
//{
//	for (int i = 2; i < n; ++i)
//	{
//		if (n % i == 0) { return false; }
//	}
//	return true;
//}
//
//int main()
//{
//	int num = 0;
//	cin >> num;
//	int num1 = num / 2, num2 = num - num1;
//	while (num1 > 2 && num2 < num - 1)
//	{
//		if (isPrime(num1) && isPrime(num2))
//		{
//			cout << num1 << endl << num2 << endl;
//			return 0;
//		}
//		--num1;
//		++num2;
//	}
//	cout << num1 << endl << num2 << endl;
//	return 0;
//}